package com.zzyl.nursing.controller.member;

import com.zzyl.common.annotation.Log;
import com.zzyl.common.core.controller.BaseController;
import com.zzyl.common.core.domain.AjaxResult;
import com.zzyl.common.core.domain.R;
import com.zzyl.common.enums.BusinessType;
import com.zzyl.nursing.domain.Reservation;
import com.zzyl.nursing.service.IReservationService;
import com.zzyl.nursing.vo.ReservationCountByTimeVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 预约信息Controller
 *
 * @author zhx
 * @date 2025-05-23
 */
@RestController
@RequestMapping("/member/reservation")
@Api(tags = "预约信息相关接口")
public class ReservationController extends BaseController {
	@Autowired
	private IReservationService reservationService;

	/**
	 * 查询预约数量
	 *
	 * @return
	 */
	@GetMapping("/cancelled-count")
	@ApiOperation("查询取消预约数量")
	public R<Integer> getCancelledReservationCount() {
		Integer num = reservationService.getCancelledReservationCount();
		return R.ok(num);
		// return R.ok(1);
	}

	/**
	 * 根据时间段查询预约数量
	 * @param time
	 * @return
	 */
	@GetMapping("/countByTime")
	@ApiOperation("根据时间段查询预约数量")
	public AjaxResult getCountByTime(@ApiParam(value = "预约时间", required = true) Long time){
		List<ReservationCountByTimeVo> vo = reservationService.getCountByTime(time);
		return success(vo);
	}

	/**
	 * 查询预约信息列表
	 */
	@GetMapping("/page")
	@ApiOperation(value = "获取预约信息列表")
	public AjaxResult/*TableDataInfo<List<Reservation>>*/ list(Reservation reservation)
	{
	    startPage();
	    List<Reservation> list = reservationService.selectReservationList(reservation);
	    return success(getDataTable(list));
	}
	//
	// /**
	//  * 导出预约信息列表
	//  */
	// @PreAuthorize("@ss.hasPermi('nursing:reservation:export')")
	// @Log(title = "预约信息", businessType = BusinessType.EXPORT)
	// @PostMapping("/export")
	// @ApiOperation("导出预约信息列表")
	// public void export(HttpServletResponse response, Reservation reservation)
	// {
	//     List<Reservation> list = reservationService.selectReservationList(reservation);
	//     ExcelUtil<Reservation> util = new ExcelUtil<Reservation>(Reservation.class);
	//     util.exportExcel(response, list, "预约信息数据");
	// }
	//
	// /**
	//  * 获取预约信息详细信息
	//  */
	// @PreAuthorize("@ss.hasPermi('nursing:reservation:query')")
	// @GetMapping(value = "/{id}")
	// @ApiOperation("获取预约信息详细信息")
	// public R<Reservation> getInfo(@ApiParam(value = "预约信息ID", required = true)
	//         @PathVariable("id") Long id)
	// {
	//     return R.ok(reservationService.selectReservationById(id));
	// }
	//
	/**
	 * 新增预约信息
	 */

	@Log(title = "预约信息", businessType = BusinessType.INSERT)
	@PostMapping
	@ApiOperation("新增预约信息")
	public AjaxResult add(@ApiParam(value = "预约信息实体", required = true) @RequestBody Reservation reservation)
	{
	    return toAjax(reservationService.insertReservation(reservation));
	}
	//
	// /**
	//  * 修改预约信息
	//  */
	// @PreAuthorize("@ss.hasPermi('nursing:reservation:edit')")
	// @Log(title = "预约信息", businessType = BusinessType.UPDATE)
	// @PutMapping
	// @ApiOperation("修改预约信息")
	// public AjaxResult edit(@ApiParam(value = "预约信息实体", required = true) @RequestBody Reservation reservation)
	// {
	//     return toAjax(reservationService.updateReservation(reservation));
	// }
	//
	// /**
	//  * 删除预约信息
	//  */
	// @PreAuthorize("@ss.hasPermi('nursing:reservation:remove')")
	// @Log(title = "预约信息", businessType = BusinessType.DELETE)
	// @DeleteMapping("/{ids}")
	// @ApiOperation("删除预约信息")
	// public AjaxResult remove(@ApiParam(value = "要删除的数据id的数组") @PathVariable Long[] ids)
	// {
	//     return toAjax(reservationService.deleteReservationByIds(ids));
	// }



	/**
	 * 取消预约信息
	 */
	@PutMapping("/{id}/cancel")
	@ApiOperation("取消预约信息")
	public AjaxResult edit(@ApiParam(value = "预约信息id", required = true) @PathVariable Integer id)
	{
	    return toAjax(reservationService.cancelReservation(id));
	}

}
